Advances in technology have resulted in smaller and more powerful computing devices. For example, there currently exist a variety of portable personal computing devices, including wireless computing devices, such as portable wireless telephones, personal digital assistants (PDAs), and paging devices that are small, lightweight, and easily carried by users. More specifically, portable wireless telephones, such as cellular telephones and Internet Protocol (IP) telephones, can communicate voice and data packets over wireless networks. Further, many such wireless telephones include other types of devices that are incorporated therein. For example, wireless telephones can also include a digital still camera, a digital video camera, a digital recorder, and an audio file player. Also, such wireless telephones can process executable instructions, including software applications, such as a web browser application, that can be used to access the Internet. As such, these wireless telephones can include significant computing capabilities.
Digital signal processors (DSPs), image processors, and other processing devices are frequently used in portable personal computing devices and operate in conjunction with an operating system. One requirement of a real-time operating system (RTOS) is strict priority scheduling. On a single processor, the requirement is that the highest priority executable task should be scheduled. Typically, in a multithreaded or multiprocessor system with multiple central processing units (CPUs), a specific task is bound to a specific hardware thread or CPU and a single-processor scheduler algorithm is run on each hardware thread or CPU independently. This approach does not satisfy the RTOS constraint that the highest priority executable tasks overall should be scheduled, and it requires knowledge of what hardware thread or CPU to schedule the task on ahead of time, knowledge that may not be available.